package com.wego.converter;

import com.wego.bean.BaseConverter;
import com.wego.bean.ExcelConverter;
import com.wego.domain.details.CommentDetails;
import com.wego.domain.dto.CommentDTO;
import com.wego.domain.entity.Comment;
import com.wego.domain.excel.CommentExcel;
import com.wego.domain.vo.CommentVO;
import org.mapstruct.Mapper;

import java.util.List;

@Mapper(componentModel = "spring")
public interface CommentConverter extends BaseConverter<Comment, CommentVO,CommentDetails, CommentDTO>, ExcelConverter<Comment, CommentExcel> {
    /**
     * 将Comment对象转换为CommentDetails对象
     * 该方法会将Comment对象中的status编码转换为对应的文本描述
     *
     * @param comment 源Comment对象，包含评论基本信息和状态编码
     * @return CommentDetails对象，包含转换后的评论详细信息，其中status为文本描述
     */
    CommentDetails comment2commentDetails(Comment comment);

    /**
     * 将Comment对象转换为CommentExcel对象
     * 该方法会将Comment对象中的status编码转换为对应的文本描述，用于Excel导出
     *
     * @param comment 源Comment对象，包含评论基本信息和状态编码
     * @return CommentExcel对象，包含转换后的评论Excel信息，其中status为文本描述
     */
    CommentExcel comment2commentExcel(Comment comment);

    /**
     * 将CommentExcel对象转换为Comment对象
     * 该方法会将CommentExcel对象中的status文本描述转换为对应的编码
     *
     * @param commentExcel 源CommentExcel对象，包含从Excel导入的评论信息
     * @return Comment对象，包含转换后的评论基本信息，其中status为编码
     */
    Comment commentExcel2comment(CommentExcel commentExcel);

    List<CommentVO> commentList2CommentVOList(List<Comment> list);

    Comment commentVO2entity(CommentVO commentVO);
}
